Docker একটি ওপেন সোর্স প্ল্যাটফর্ম, যা ডেভেলপারদের তাদের অ্যাপ্লিকেশন এবং সিস্টেমের ডিপেন্ডেন্সি একত্রিত করে কনটেইনারে চালানোর মাধ্যমে তাদের সহজে ডেভেলপ, শেয়ার এবং ডিপ্লয় করতে সহায়তা করে। Docker কনটেইনারাইজেশন হল একটি প্রক্রিয়া যেখানে অ্যাপ্লিকেশন এবং তার সব ডিপেন্ডেন্সি (লাইব্রেরি, ফ্রেমওয়ার্ক, কনফিগারেশন ফাইল) একটি কনটেইনারে সংকলিত হয়, যা যেকোনো পরিবেশে (যেমন, ডেভেলপমেন্ট, টেস্টিং, প্রোডাকশন) নির্ভুলভাবে কাজ করে।
এটি অ্যাপ্লিকেশন ডিপ্লয়মেন্টের জন্য বহুমুখী, স্কেলযোগ্য, এবং কার্যকরী সমাধান প্রদান করে। Docker ব্যবহারের মাধ্যমে অ্যাপ্লিকেশন কনটেইনারাইজ করা যায় এবং পরবর্তীতে দ্রুত এবং নিরাপদভাবে পরিবেশে চলতে থাকে।
Docker কনটেইনার একটি পরিবেশ যার মধ্যে একটি অ্যাপ্লিকেশন এবং তার ডিপেন্ডেন্সি থাকে। এটি ভার্চুয়াল মেশিন (VM) থেকে অনেকটাই আলাদা। কনটেইনারে অ্যাপ্লিকেশন রান করার জন্য একটি সম্পূর্ণ অপারেটিং সিস্টেমের প্রয়োজন হয় না, বরং কনটেইনার শুধু হোস্ট সিস্টেমের কার্নেল ব্যবহার করে, যার ফলে এটি অনেক দ্রুত এবং কম রিসোর্স খরচ করে।
Docker কনটেইনার তৈরি করার জন্য কয়েকটি সাধারণ ধাপ অনুসরণ করতে হয়:
Dockerfile তৈরি করা: Dockerfile হল একটি টেক্সট ফাইল, যা নির্দেশনা প্রদান করে কিভাবে কনটেইনার তৈরি করা হবে। এতে একটি নির্দিষ্ট অপারেটিং সিস্টেম, লাইব্রেরি এবং অন্যান্য ডিপেন্ডেন্সি উল্লেখ করা থাকে।
উদাহরণস্বরূপ, একটি ASP.NET Core অ্যাপ্লিকেশনের জন্য Dockerfile:
# Base Image
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
# Build Image
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["MyApp/MyApp.csproj", "MyApp/"]
RUN dotnet restore "MyApp/MyApp.csproj"
COPY . .
WORKDIR "/src/MyApp"
RUN dotnet build "MyApp.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "MyApp.csproj" -c Release -o /app/publish
# Final image
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyApp.dll"]
এখানে, প্রথমে একটি বেস ইমেজ থেকে শুরু করা হচ্ছে, তারপর কোড বিল্ড এবং প্যাকেজিংয়ের জন্য একটি বিল্ড ইমেজ ব্যবহার করা হচ্ছে। শেষে, এই ইমেজটি ব্যবহার করে কনটেইনার তৈরি হচ্ছে এবং অ্যাপ্লিকেশন রান করতে dotnet MyApp.dll
কমান্ড দেওয়া হচ্ছে।
Docker ইমেজ তৈরি করা: Dockerfile তৈরি করার পর এটি ব্যবহার করে Docker ইমেজ তৈরি করতে হয়। এর জন্য নিচের কমান্ডটি ব্যবহার করতে হবে:
docker build -t myapp:1.0 .
এই কমান্ডটি Dockerfile এর বর্তমান ডিরেক্টরি থেকে ইমেজ তৈরি করবে এবং তাকে myapp:1.0
ট্যাগ দিয়ে সংরক্ষণ করবে।
Docker কনটেইনার রান করা: Docker ইমেজ তৈরি করার পর, আপনি সেটি কনটেইনার হিসেবে রান করতে পারবেন:
docker run -d -p 8080:80 myapp:1.0
এখানে, -d
দিয়ে কনটেইনারকে ব্যাকগ্রাউন্ডে চালানো হচ্ছে এবং -p
দিয়ে কনটেইনারের 80 পোর্ট হোস্টের 8080 পোর্টের সাথে ম্যাপ করা হচ্ছে।
যদি আপনার অ্যাপ্লিকেশন একাধিক কনটেইনারে চলতে থাকে (যেমন, একটি ওয়েব সার্ভার, একটি ডেটাবেস ইত্যাদি), তবে Docker Compose ব্যবহার করা সহজ হয়। Docker Compose একটি টুল যা একাধিক কনটেইনারকে একত্রে ডিফাইন এবং রান করতে সহায়তা করে।
এটি YAML ফাইলের মাধ্যমে কনটেইনারের কনফিগারেশন ডিফাইন করতে সহায়তা করে।
version: '3'
services:
web:
image: myapp:1.0
ports:
- "8080:80"
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
উপরের YAML ফাইলটি web
সার্ভিসের জন্য myapp:1.0
ইমেজ ব্যবহার করবে এবং db
সার্ভিসের জন্য mysql:5.7
ইমেজ ব্যবহার করবে। এরপর Docker Compose দিয়ে এই কনটেইনারগুলো একত্রে রান করতে হবে:
docker-compose up
Docker Hub একটি পাবলিক রেজিস্ট্রি, যেখানে আপনি আপনার তৈরি করা Docker ইমেজগুলো পাবলিশ করতে পারেন, এবং অন্যরা সেগুলি ডাউনলোড করতে পারে। Docker Hub ব্যবহার করে আপনি ইমেজগুলো শেয়ার করতে পারবেন এবং সহজে ডিপ্লয়মেন্টের জন্য প্রস্তুত রাখতে পারবেন।
Docker ব্যবহারের মাধ্যমে অ্যাপ্লিকেশন এবং তার ডিপেন্ডেন্সি গুলি কনটেইনারে প্যাকেজ করা যায়, যা একাধিক পরিবেশে একযোগভাবে এবং নির্ভুলভাবে কাজ করতে সক্ষম। এটি ডেভেলপারদের স্কেলযোগ্য, পোর্টেবল এবং দ্রুত ডিপ্লয়মেন্টের সুবিধা প্রদান করে। Docker Compose এর মাধ্যমে একাধিক কনটেইনার সহজে পরিচালনা করা যায় এবং Docker Hub এর মাধ্যমে ইমেজ শেয়ার করা সম্ভব। Docker কনটেইনারাইজেশন আধুনিক অ্যাপ্লিকেশন ডিপ্লয়মেন্টের একটি অত্যন্ত কার্যকরী সমাধান।
common.read_more